A virtual machine is a software-based emulation of a physical machine (e.g., a computer) that executes programs like the physical machine. Virtual machines generally operate based on the computer architecture and functions of a real computer. Virtual machines generally provide a complete system platform which supports the execution of a complete operating system. Virtual machines usually emulate an existing architecture, and are built with the purpose of either providing a platform to run programs where the real hardware is not available for use (for example, executing on otherwise obsolete platforms), or of having multiple instances of virtual machines leading to more efficient use of computing resources, both in terms of energy consumption and cost effectiveness. This efficient use of computing resources is known as hardware virtualization. The use of a virtual machine may enable: multiple operating system environments to coexist on the same computer, in strong isolation from each other; an instruction set architecture (ISA) that is somewhat different from that of the real machine; and application provisioning, maintenance, high availability, and disaster recovery.
A hypervisor is computer software, computer firmware, or computer hardware that creates and runs virtual machines. A computer on which a hypervisor is running one or more virtual machines is generally referred to as a host machine, while each virtual machine running on the host machine is generally referred to as a guest machine. The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems. Multiple instances of a variety of operating systems may share the virtualized hardware resources.
A host machine generally employs a hypervisor to create a guest virtual machine by accessing a virtual machine disk file that contains or references disk data that is necessary to create the guest virtual machine. One common problem encountered when utilizing a hypervisor is that some hypervisors are only designed to access virtual machine disk files that have a particular file format that is native to the hypervisor. For example, Microsoft Hyper-V® hypervisors are designed to only be capable of accessing virtual machine disk files having the VHD and VHDX file formats, which are the native file formats for Microsoft® Hyper-V® hypervisors, for the purpose of creating a guest virtual machine. In particular, Microsoft Hyper-V® technology lacks disk plugin application programming interfaces (APIs) which are necessary to enable third parties to quickly attach disk data from their own disk image formats into Microsoft® Hyper-V® hypervisors for access by virtual machines as virtual machine disk files. This inability of some hypervisors to access a variety of differently-formatted virtual machine disk files, due to a lack of disk plugin APIs for example, limits the virtual machine disk files that can be used to create virtual machines using these hypervisors.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced.